/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package erp.financeiro.servlets;

import erp.financeiro.Contrato;
import erp.financeiro.EstadoContrato;
import erp.financeiro.TipoContrato;
import erp.financeiro.TipoDeVencimentoContrato;
import erp.financeiro.dao.ContratoDAO;
import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
import javax.persistence.Query;
import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;
import javax.persistence.Persistence;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 *
 * @author robert.werutsky
 */
public class CarregaGerenciaContratoServlet extends HttpServlet {

    /**
     * Processes requests for both HTTP <code>GET</code> and <code>POST</code> methods.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    protected void processRequest(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        response.setContentType("text/html;charset=UTF-8");
        PrintWriter out = response.getWriter();
        try {

//            EntityManagerFactory emf = Persistence.createEntityManagerFactory("erpfinanceiroPU");
//            EntityManager em = emf.createEntityManager();
//
//            Query query = em.createQuery("SELECT x FROM " + Contrato.class.getSimpleName() + " x");
//            ArrayList<Contrato> contratos = (ArrayList<Contrato>) query.getResultList();

            String str_tipoContrato = request.getParameter("tipoContrato");
            String str_tipoVencimento = request.getParameter("tipoVencimento");
            String str_estadoContrato = request.getParameter("estadoContrato");
            String str_valorInicial = request.getParameter("valorInicial");
            String str_valorFinal = request.getParameter("valorFinal");
            String razaoSocial = request.getParameter("razaoSocial");

            if (razaoSocial != null && razaoSocial.equals("")){
                razaoSocial = null;
            }

            Double valorInicial = null;
            if (str_valorInicial != null && str_valorInicial.equals("")){
                str_valorInicial = null;
                valorInicial = Double.parseDouble(str_valorInicial);
            }

            Double valorFinal = null;
            if (str_valorFinal != null && str_valorFinal.equals("")){
                str_valorFinal = null;
                valorFinal = Double.parseDouble(str_valorFinal);
            }

            TipoContrato tipoContrato = null;
            if (str_tipoContrato != null) {
                if (str_tipoContrato.equals("patrocinio")) {
                    tipoContrato = TipoContrato.PATROCINIO;
                } else if (str_tipoContrato.equals("broadcasting")) {
                    tipoContrato = TipoContrato.BROADCASTING;
                }
            }

            TipoDeVencimentoContrato tipoVencimento = null;
            if (str_tipoVencimento != null) {
                if (str_tipoVencimento.equals("mensal")) {
                    tipoVencimento = TipoDeVencimentoContrato.MENSAL;
                } else if (str_tipoVencimento.equals("anual")) {
                    tipoVencimento = TipoDeVencimentoContrato.ANUAL;
                }
            }

           EstadoContrato estadoContrato = null;
            if (str_estadoContrato != null) {
                if (str_estadoContrato.equals("aguardando")) {
                    estadoContrato = EstadoContrato.AGUARDANDO;
                } else if (str_estadoContrato.equals("cancelado")) {
                    estadoContrato = EstadoContrato.CANCELADO;
                } else if (str_estadoContrato.equals("vencido")) {
                    estadoContrato = EstadoContrato.VENCIDO;
                } else if (str_estadoContrato.equals("vigente")) {
                    estadoContrato = EstadoContrato.VIGENTE;
                }
            }


            List<Contrato> contratos = ContratoDAO.getContratos(estadoContrato, tipoVencimento, tipoContrato, razaoSocial, valorInicial, valorFinal, null);

            request.setAttribute("contratos", contratos);
            javax.servlet.RequestDispatcher rd = this.getServletContext().getRequestDispatcher("/gerenciacontrato.jsp");
            rd.forward(request, response);
        } catch (Exception e) {
            request.setAttribute("error", e);
            javax.servlet.RequestDispatcher rd = this.getServletContext().getRequestDispatcher("/error.jsp");
            rd.forward(request, response);
        } finally {
            out.close();
        }
    }

    // <editor-fold defaultstate="collapsed" desc="Métodos HttpServlet. Clique no sinal de + à esquerda para editar o código.">
    /**
     * Handles the HTTP <code>GET</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Handles the HTTP <code>POST</code> method.
     * @param request servlet request
     * @param response servlet response
     * @throws ServletException if a servlet-specific error occurs
     * @throws IOException if an I/O error occurs
     */
    @Override
    protected void doPost(HttpServletRequest request, HttpServletResponse response)
    throws ServletException, IOException {
        processRequest(request, response);
    }

    /**
     * Returns a short description of the servlet.
     * @return a String containing servlet description
     */
    @Override
    public String getServletInfo() {
        return "Short description";
    }// </editor-fold>

}
